package com.sztx.pay.center.core.service;

import java.util.List;

import com.sztx.pay.center.dataaccess.domain.OrderB2cDO;
import com.sztx.pay.center.dataaccess.domain.OrderMappingDO;
import com.sztx.pay.center.dataaccess.domain.OrderRechargeDO;
import com.sztx.pay.center.dataaccess.domain.OrderRefundDO;
import com.sztx.pay.center.dataaccess.domain.OrderTransferDO;
import com.sztx.pay.center.dataaccess.domain.OrderWithdrawDO;
import com.sztx.pay.center.dataaccess.domain.PayFlowDO;
import com.sztx.pay.center.dataaccess.entity.QueryOrder;
import com.sztx.se.dataaccess.mysql.config.PageQuery;

public interface TreadQueryService {

	List<OrderB2cDO> B2CQuery(QueryOrder query , PageQuery pageQuery);
	
	Integer B2CTotalCount(QueryOrder query);
	
	List<OrderRechargeDO> rechargeQuery(QueryOrder query , PageQuery pageQuery);
	
	Integer rechargeTotalCount(QueryOrder query);
	
	List<OrderRefundDO> refundQuery(QueryOrder query , PageQuery pageQuery);
	
	Integer refundTotalCount(QueryOrder query);
	
	List<OrderTransferDO> transferQuery(QueryOrder query , PageQuery pageQuery);
	
	Integer transferTotalCount(QueryOrder query);
	
	List<OrderWithdrawDO> withdrawQuery(QueryOrder query , PageQuery pageQuery);
	
	Integer withdrawTotalCount(QueryOrder query);

	/**
	 * 根据tradeOrderNo查询对应在OrderMapping里面的记录
	 * @param queryRequestEntity
	 * @param pageQuery
     * @return
     */
	List<OrderMappingDO> orderMappingQuery(QueryOrder query , PageQuery pageQuery);

	/**
	 * 根据tradeOrderNo统计对应在OrderMapping里面记录的总数
	 * @param queryRequestEntity
	 * @return
	 */
	Integer orderMappingTotalCount(QueryOrder query);

	/**
	 * 根据originOrderId或者tradeOrderNos查询对应在PayFlow里面的记录
	 * @param originOrderId
	 * @param tradeOrderIds
	 * @param pageQuery
     * @return
     */
	List<PayFlowDO> payFlowQuery(String originOrderId, List<String> tradeOrderIds, PageQuery pageQuery);

	/**
	 * 根据originOrderId或者tradeOrderNos统计对应在PayFlow里面记录的总数
	 * @param originOrderId
	 * @param tradeOrderIds
	 * @return
	 */
	Integer payFlowCount(String originOrderId, List<String> tradeOrderIds);
	
	
}
